package pub.developers.forum.infrastructure.dal.dao;

import org.apache.ibatis.annotations.Param;
import pub.developers.forum.api.response.data.LastMonthData;
import pub.developers.forum.api.response.user.UserInfoResponse;
import pub.developers.forum.infrastructure.dal.dataobject.UserDO;

import java.util.List;
import java.util.Set;


public interface UserDAO {

    // 获取我的点赞记录

    void insert(UserDO userDO);

    void delete(@Param("id") Long id);

    UserDO get(@Param("id") Long id);

    UserDO getByEmail(@Param("email") String email);

    UserDO getByOpenid(@Param("openid")String openid);

    void update(UserDO userDO);

    List<UserDO> queryInIds(@Param("ids") Set<Long> ids);

    List<UserDO> queryOrderLastLoginTime();

    List<UserDO> query(UserDO userDO);

    //根据关注用户的id查询其信息
    List<UserInfoResponse> queryFollowerInformation(List<Long> ids);

    //根据用户id 拿到用户昵称以及用户头像
    UserInfoResponse selectNicknameById(Long id);

    //根据用户id 拿到当前登录用户自己的个人信息
    UserDO selectSelfInformation(Long id);

    //根据当前登录的用户的id 去查询openid字段
    String selectOpenIdById(Long id);

    //昨日新增用户数
    Long selectNewAddUser(@Param("today") String today , @Param("yesterday") String yesterday);

    //统计近一个月每日的新增用户数
    List<LastMonthData> selectMonthData(@Param("lastMonthDay") String monthDay , @Param("today") String today);
}
